In [1]:
# importar bibliotecas 
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
In [2]:
# carregar dataframe
sui = pd.read_csv('df_atualizada.csv')
In [3]:
# visualizar colunas sem omissão
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)

# visualizar dataframe
sui.head()
Out[3]:
CODMUNNATU CODMUNOCOR CODMUNRES NATURAL CAUSABAS IDADE SEXO RACACOR ESTCIV ESC ESCFALAGR1 OCUP suicidio OCUP_INT IDADE_INT idade_real CODMUNNATU_INT NATURAL_INT RACACOR_INT ESTCIV_INT ESC_INT ESCFALAGR1_INT
0 120020 410690 120020 812 C258 460.0 2 1 2 3 11 999992.0 0 999992 460 60 120020 812 1 2 3 11
1 411610 120040 120040 841 B342 455.0 2 1 2 5 8 241005.0 0 241005 455 55 411610 841 1 2 5 8
2 412650 120040 120040 841 B342 485.0 1 1 2 3 11 354705.0 0 354705 485 85 412650 841 1 2 3 11
3 411190 110020 120040 841 B342 471.0 1 1 0 0 0 782510.0 0 782510 471 71 411190 841 1 0 0 0
4 412650 120040 120040 841 B342 479.0 2 1 2 4 12 0.0 0 0 479 79 412650 841 1 2 4 12
In [4]:
# definir novo dataframe
df = sui[[ 'suicidio', 'IDADE_INT', 'idade_real', 'CODMUNNATU_INT', 'CODMUNOCOR', 'CODMUNRES', 'NATURAL_INT', 'RACACOR_INT', 'ESTCIV_INT', 'ESC_INT', 'ESCFALAGR1_INT', 'CAUSABAS', 'SEXO', 'RACACOR', 'OCUP_INT']]
In [5]:
# exibir dataframe
df.head()
Out[5]:
suicidio IDADE_INT idade_real CODMUNNATU_INT CODMUNOCOR CODMUNRES NATURAL_INT RACACOR_INT ESTCIV_INT ESC_INT ESCFALAGR1_INT CAUSABAS SEXO RACACOR OCUP_INT
0 0 460 60 120020 410690 120020 812 1 2 3 11 C258 2 1 999992
1 0 455 55 411610 120040 120040 841 1 2 5 8 B342 2 1 241005
2 0 485 85 412650 120040 120040 841 1 2 3 11 B342 1 1 354705
3 0 471 71 411190 110020 120040 841 1 0 0 0 B342 1 1 782510
4 0 479 79 412650 120040 120040 841 1 2 4 12 B342 2 1 0
In [6]:
# Caminho onde deseja salvar o arquivo CSV localmente
file_path = '/Users/leonardozara/Documents/Suicidio/df_atualizada_2.csv'

# Salvar o DataFrame como um arquivo CSV
df.to_csv(file_path, index=False)  # Use index=False para não incluir o índice no arquivo CSV

Modelo de Árvore de decisão¶

In [7]:
# definindo variáveis para as variáveis dependentes e independentes (target e data)
from sklearn import tree

# carregando dataframe para modelo de previsao
dataframe = pd.read_csv('df_atualizada_2.csv')

df = dataframe.drop('CAUSABAS', axis=1)

# definindo as variaveis dependente (y) e independentes (X)
X = df.drop('suicidio', axis=1) 
y = df['suicidio']

# Dividir o conjunto de dados em treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# treinar classificador
clf = tree.DecisionTreeClassifier(random_state=42)
clf = clf.fit(X_train, y_train)

# Fazer previsões com o conjunto de teste
y_pred = clf.predict(X_test)
In [8]:
# Calcular a acurácia do modelo
accuracy = accuracy_score(y_test, y_pred)
print(f"Acurácia do modelo: {accuracy:.2f}")
Acurácia do modelo: 0.98
In [9]:
# Plotar a árvore de decisão
plt.figure(figsize=(120, 80))  # Aumentei o tamanho da figura para melhor visualização
plot_tree(clf, feature_names=X.columns, class_names=['Não Suicídio', 'Suicídio'], filled=True)
plt.show()
No description has been provided for this image
In [ ]: